"""
浏览器对象
"""

from selenium import webdriver
from tools.tool_logger import *

class ToolDriver(object):
    """浏览器对象管理类"""
    __driver = None  # 浏览器对象变量初始化状态，私有化内部调用，防止实例化获取到

    @classmethod
    def get_driver(cls, url):
        """获取浏览器对象方法"""
        # 说明：为了防止在同一次测试过程中，调用获取浏览器对象方法时，
        #  都会创建一个新的浏览器对象，因此有必要先判断对象是否存在，不存在时再创建！
        logger.info('获取浏览器对象开始')
        try:
            if cls.__driver is None:
                cls.__driver = webdriver.Chrome()  # 获取浏览器对象
                cls.__driver.get(url)  # 打开首页
                cls.__driver.maximize_window()  # 窗口最大化
                cls.__driver.implicitly_wait(30)  # 隐式等待30秒
            return cls.__driver
        except Exception as e:
            logger.error(f'获取浏览器对象失败，报错信息为：{e}')

    @classmethod
    def quit_driver(cls):
        """退出浏览器对象方法"""
        #  说明：必须保证浏览器对象存在，才能执行退出操作
        logger.info('退出浏览器开始')
        try:
            if cls.__driver:  # 等价于：if cls.__driver is not None
                time.sleep(3)
                cls.__driver.quit()  # 退出浏览器
                cls.__driver = None  # 保证在移除对象后，保留对象变量，以备下次使用
        except Exception as e:
            logger.error(f'退出浏览器失败，报错信息为：{e}')




if __name__ == '__main__':
    ToolDriver.get_driver()